<%@page import="org.apache.bcel.generic.LADD"%>
<%@page import="com.itextpdf.text.log.SysoLogger"%>
<%@page import="java.io.*"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@ page import="javax.servlet.http.HttpUtils,java.util.*" %>
<%@page import="com.jimet.server.*"%>
<%@ page import="java.sql.*" %>
<%

	String tabname = request.getParameter("tabname");
	String tablo = request.getParameter("tablo");
	
	int tab = Integer.parseInt(tablo);
	
	String[] key = new String[tab];
	String[] value = new String[tab+2];
	
	for(int i = 0;i<tab;i++)
	{
		key[i] = request.getParameter("Key"+i);
		value[i] = request.getParameter("Val"+i);
		out.print(key[i]+" "+value[i]);
	}
	
    try{
        Class.forName("com.mysql.jdbc.Driver");
          Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/reachol", "root", "");
          Statement st=con.createStatement();
         
         String sorgu = "CREATE TABLE "+tabname + " ("; 
          
      	for(int j=0;j<tab;j++)
      	{
      		if(j==0)
      			sorgu = sorgu + key[j] + " " + value[j] + " NOT NULL AUTO_INCREMENT PRIMARY KEY";
      		if(j!=0)
      			sorgu = sorgu + key[j] + " " + value[j] ;	
      		if(j != tab-1)
      			sorgu = sorgu + ",";
      			
      	}
            sorgu = sorgu + ", tsUpdate TIMESTAMP DEFAULT NOW() , deleted INT DEFAULT 0"; 
      		sorgu = sorgu + ");";
      		int i=st.executeUpdate(sorgu);
		
        st.close();
       
        
      	
       con.close(); 
       out.println("Data is successfully inserted!");
       }
       catch(Exception e){
       System.out.print(e);
       e.printStackTrace();
       }
    	
    try{
    	FileOutputStream dosya = new FileOutputStream(JimetConfiguration.getString("APPLICATION.DB")+"db//"+tabname+"DB.java");
    		
    	try{
    		
    		String dosyaNote = "package com.reachol.objects.db;\n\nimport com.jimet.objects.JimetDB; \nimport java.util.LinkedHashMap;\n";
			dosyaNote = dosyaNote + "\n";
			dosyaNote = dosyaNote + "public class "+ tabname+"DB extends JimetDB {\n\n";
			dosyaNote = dosyaNote + "\tpublic "+ tabname+"DB() throws Exception {\n";
			dosyaNote = dosyaNote + "\t\tdbFieldProp = new LinkedHashMap<String, String>();\n";
			
			for(int k = 0; k<tab;k++)
			{
				dosyaNote = dosyaNote +"\t\tdbFieldProp.put(\""+key[k]+"\",\""+key[k]+"\");\n";
			}
			dosyaNote = dosyaNote +"\t\tdbFieldProp.put(\"tsUpdate\",\"tsUpdate\");\n";
			dosyaNote = dosyaNote +"\t\tdbFieldProp.put(\"deleted\",\"deleted\");\n";
			dosyaNote = dosyaNote + "\n\t\ttableName = \""+tabname+"\";\n\n	}\n}\n";
    		
    		
    		
    		new PrintStream(dosya).println(dosyaNote);
    		out.println ("Verileriniz Dosyaya Eklendi.");
    		dosya.close();
    		}
    		catch(Exception e){
    		out.print("Verileriniz Dosyaya Eklenemedi.");
    		}
    	
    	}
    	catch (IOException e){
    	out.println ("Dosya Oluşturulamadı");
    	}
    
    try{
    	FileOutputStream dosyacok = new FileOutputStream(JimetConfiguration.getString("APPLICATION.DB")+tabname+"s.java");
    		
    	try{
    		
    		String dosyaNote = "package com.reachol.objects; \n\nimport com.jimet.objects.JimetObjects; \n\nimport com.reachol.objects.db.*;\n";
			dosyaNote = dosyaNote + "\n";
			dosyaNote = dosyaNote + "public class "+ tabname+"s extends JimetObjects \n{\n\n";
			dosyaNote = dosyaNote + "\tpublic "+ tabname+"s() throws Exception \n\t{\n";
			dosyaNote = dosyaNote + "\t\tsetDb("+tabname+"DB.class);\n";
			dosyaNote = dosyaNote + "\t\tsetObject("+tabname+".class);\n";
						
			dosyaNote = dosyaNote + "\t}\n}\n";
    		
    		
    		
    		new PrintStream(dosyacok).println(dosyaNote);
    		out.println ("Verileriniz Dosyaya Eklendi.");
    		dosyacok.close();
    		}
    		catch(Exception e){
    		out.print("Verileriniz Dosyaya Eklenemedi.");
    		}
    	
    	}
    	catch (IOException e){
    	out.println ("Dosya Oluşturulamadı");
    	}
    try{
    	FileOutputStream dosyacok = new FileOutputStream(JimetConfiguration.getString("APPLICATION.DB")+tabname+".java");
    		
    	try{
    		
    		String dosyaNote = "package com.reachol.objects; \n\nimport java.sql.Timestamp; \nimport com.jimet.objects.JimetObject; \nimport com.reachol.objects.db.*;\n";
			dosyaNote = dosyaNote + "\n";
			dosyaNote = dosyaNote + "public class "+ tabname+" extends JimetObject \n{\n\n";
			
			
			for(int k = 0; k<tab;k++)
			{
				String deg = "";
				
				if(value[k].contains("varchar") || value[k].contains("VARCHAR") || value[k].contains("Varchar") )
					deg = "String";
				if(value[k].contains("int") || value[k].contains("INT") || value[k].contains("Int") )
					deg = "long";
				
				dosyaNote = dosyaNote +"\tprivate " + deg + " " + key[k] +"; \n";
			}

				dosyaNote = dosyaNote +"\tprivate Timestamp tsUpdate; \n";
				dosyaNote = dosyaNote +"\tprivate int deleted; \n";
				dosyaNote = dosyaNote +"\n\tpublic "+tabname+"(long id) throws Exception \n { \n\t\t this(); \n\t\t if( id != -1 ) \n\t\t\t this.load(id); \n } \n";
				dosyaNote = dosyaNote +"\tpublic "+tabname+"(boolean noInit){} \n\n";
				dosyaNote = dosyaNote +"\tpublic "+tabname+"() throws Exception \n\t{\n";
				
				for(int t = 0;t<tab;t++)
				{
					String deg2 = "";
					if(value[t].contains("varchar") || value[t].contains("VARCHAR") || value[t].contains("Varchar") )
						deg2 = "\"\"";
					if(value[t].contains("int") || value[t].contains("INT") || value[t].contains("Int") )
						deg2 = "-1";
					
					dosyaNote = dosyaNote +"\t\tthis."+key[t] +"="+ deg2 + ";\n";
					
				}
				
				dosyaNote = dosyaNote+"\t\tthis.tsUpdate = null;\n";
				dosyaNote = dosyaNote+"\t\tthis.deleted = 0;\n";
				dosyaNote = dosyaNote +"\t\tsetDb("+tabname+"DB.class); \n\t}\n\n";
				
			for(int m = 0;m<tab;m++)
			{
				String deg = "";
				String betterIdea = "";
				
				char first = Character.toUpperCase(key[m].charAt(0));
				betterIdea = first + key[m].substring(1);
				
				
				if(value[m].contains("varchar") || value[m].contains("VARCHAR") || value[m].contains("Varchar") )
					deg = "String";
				if(value[m].contains("int") || value[m].contains("INT") || value[m].contains("Int") )
					deg = "long";
				
				dosyaNote = dosyaNote +"\n\tpublic void set"+betterIdea+"("+deg +" "+key[m] +") {\n\t\t this."+key[m] +"="+key[m] +"; \n\t}";
				dosyaNote = dosyaNote +"\n\tpublic "+deg+" get"+betterIdea+"() {\n\t\t return "+key[m] +"; \n\t}";
				
			}
			
		
			dosyaNote = dosyaNote +"\n\tpublic Timestamp getTsUpdate() {\n\t\t return tsUpdate;\n\t}";
			dosyaNote = dosyaNote +"\n\tpublic void setTsUpdate(Timestamp tsUpdate) {\n\t\t this.tsUpdate = tsUpdate;\n\t}";
			dosyaNote = dosyaNote +"\n\tpublic int getDeleted() {\n\t\t return deleted;\n\t}";
			dosyaNote = dosyaNote +"\n\tpublic void setDeleted(int deleted) {\n\t\t this.deleted = deleted;\n\t}";
			dosyaNote = dosyaNote + "\n}\n";
			   		
    		
    		
    		new PrintStream(dosyacok).println(dosyaNote);
    		out.println ("Verileriniz Dosyaya Eklendi.");
    		dosyacok.close();
    		}
    		catch(Exception e){
    		out.print("Verileriniz Dosyaya Eklenemedi.");
    		}
    	
    	}
    	catch (IOException e){
    	out.println ("Dosya Oluşturulamadı");
    	}
    
    
%>
